package gui;

import gui.clientes.JanelaCadastroCliente;
import java.util.ArrayList;
import javax.swing.JInternalFrame;
import bin.Menu;
import gui.Recebimento.ConfirmaRecebimento;
import gui.Recebimento.JanelaRecebimento;
import gui.Recebimento.PrincipalRecebimento;
import gui.clientes.JanelaPesquisaClientes;
import gui.item.JanelaCadastroItem;

@Deprecated
public class Integracao {

    //Constantes
    public static final String VERSION = "v1.0.1";
    public static final String NOME_SYS = "Armazing " + VERSION;

    //Atributos
    private JanelaPrincipal janelaPrincipal;
    private ArrayList<Menu> listaMenus;

    //Construtor
    // utilizar o singleton para a Integração
    public Integracao(JanelaPrincipal janelaPrincipal) {
        this.janelaPrincipal = janelaPrincipal;

        this.listaMenus = new ArrayList<Menu>();
        this.addMenusInList();
        this.addJanelasInDesktop();
    }

    //Métodos
    //Atributi lista de menus
    private void addMenusInList() {
        JanelaCor janelaCor = new JanelaCor(janelaPrincipal);
        listaMenus.add(new Menu("[Menu, Estilo, Cor do Fundo]", false, janelaCor));

        JanelaCadastroCliente janelaCadastroCliente = new JanelaCadastroCliente(janelaPrincipal);
        listaMenus.add(new Menu("[Menu, Cadastro, Cliente]", false, janelaCadastroCliente));

        JanelaPesquisaClientes janelaPesquisaClientes = new JanelaPesquisaClientes(janelaPrincipal);
        listaMenus.add(new Menu("[Menu, Pesquisa, Cliente]", false, janelaPesquisaClientes));

        JanelaCadastroItem janelaCadastroItem = new JanelaCadastroItem(janelaPrincipal);
        listaMenus.add(new Menu("[Menu, Cadastro, Item]", false, janelaCadastroItem));

        PrincipalRecebimento principalRecebimento = new PrincipalRecebimento(janelaPrincipal);
        listaMenus.add(new Menu("[Menu, Faturamento, Recebimento]", false, principalRecebimento));

        JanelaRecebimento janelaRecebimento = new JanelaRecebimento(janelaPrincipal);
        listaMenus.add(new Menu("JanelaRecebimento", false, janelaRecebimento));

        ConfirmaRecebimento confirmaRecebimento = new ConfirmaRecebimento(janelaPrincipal);
        listaMenus.add(new Menu("ConfirmaRecebimento", false, confirmaRecebimento));

//TODO 
    }

    //Adiciona janelas na tela principal
    private void addJanelasInDesktop() {
        for (Menu m : this.listaMenus) {
            this.janelaPrincipal.getDesktopPane().add(m.getJanela());
        }
    }

    //Abrir Janela levando path do menuTree como par
    public void abrirJanela(String menuTree) {
        System.out.println(menuTree);
        for (Menu m : listaMenus) {
            if (m.getMenuPath().equals(menuTree)) {
                if (!m.isAberto()) {
                    m.getJanela().setVisible(true);
                    m.setAberto(true);
                }
            }
        }
    }

    //disponibilizar abertura da janela
    public void fecharJanela(JInternalFrame janela) {
        for (Menu m : listaMenus) {
            if (m.getJanela() == janela) {
                m.getJanela().setVisible(false);
                m.setAberto(false);
            }
        }
    }
}
